Hyper Text Transfer Protocol (HTTP)
The Internet has evolved from a network that provided for simple messaging, file transfer, and remote access to one of a full multimedia experience through the use of web servers and client browsers. Hyper Text Transfer Protocol (HTTP) is the preferred protocol used between a web server and client browser where a client issues HTTP requests (e.g., GET) and the web server responds with HTTP responses (e.g., 200 OK) containing optional data contents. The optional data contents are usually web pages such as Hypertext Markup Language (HTML) documents and linked objects (such as images and videos).
The use of linked objects within a web page makes for a flexible and dynamic conveyance of information. A web page served to a client from one web server may contain linked objects whereby the client browser automatically retrieves content from one or more other web servers to complete the web page. Also, a web server may redirect a client request via a redirect response (such as HTTP 300 Redirect) to another web server. In both cases, this provides a degree of scalability where content can be distributed among multiple web servers and then used in the composition of multiple and potentially different web pages.
The content delivered to a web client has changed from sending only HTML text to sending multimedia content such as sound, images, and/or video. Typically, multimedia content is much larger in size compared to HTML files. Also, the streaming rate and corresponding multimedia content file sizes have increased dramatically from early Internet video displayed in a small 160×120 window at 40 kb/s to 720×480 video streamed at 700 kb/s today going to high definition (HD) 1920×1080 video streamed at 5 Mb/s or greater. As the amount of content that needs to be delivered to support a client request increases, the web server typically needs the ability to read content faster from storage and provide the necessary high-speed protocol processing used to deliver the content to the client. As the number of clients requesting content from a web server increases, the ability to deliver content to each requesting client can be an issue. The situation is compounded by the diversity of requests, as now the web server has to have access to a large library of content to serve these requests. A large library also translates to complex management and layout of content in storage. With the proliferation of streaming video on the internet, not only the size and streaming rate of the content are significantly larger, the content typically must be delivered to the client at a steady rate. Any decrease in the transfer rate from the desired rate can cause interruptions in the client viewing experience, thereby decreasing the overall quality of the experience.
Proxy Servers
Scalability of web servers can be further achieved using proxy servers. Typically, a proxy server is a server that services the requests of clients by forwarding the requests to other servers. A forward proxy server sits in front of a client and forwards all request from the client to the designated servers. A forward proxy server is typically used in an enterprise to provide some degree of security and hiding of clients from external servers. Reverse proxy servers sit in front of a group of web servers and are often used to load balance client requests among the multiple servers in the group each capable of serving the request. A reverse proxy can be policy-based where current load, language, source address, and/or browser cookie, to name a few examples, are used to route a request to a specific server in the group. A reverse proxy server may also include functions such as security, encryption, compression, and caching of content as a means to off-load the processing work of a web server. In the case of caching, the proxy server is able to serve requests for which it has cached the requested content (typically static content), thus off-loading the request from the web server. Here, the client request is not delivered to the web server, but is handled entirely by the proxy server using its content cache. For functions such as security, encryption and compression, the proxy serves as a pre-processing stage for the client requests and a post-processing stage for the web server responses, where all content is still delivered from the web server.
FIG. 1 illustrates a web server and a web client known in the art. The web client issues an HTTP GET request to a web server, where the Uniform Resource Locator (URL) of the content being requested is a part of the GET request. The URL is used to deliver the GET request to the right application (e.g., database application, map application, etc.) on the web server. The application on the web server applies application logic to determine if the request is to be fulfilled and, if so, the application determines the content file, the bit rate, and any other associated attributes. The application then instructs the web server to stream the file to the client based on the determined attributes. The web server constructs a 200 OK response along with the content inserted at the end of the 200 OK message. The client uses the flow control provided by transmission control protocol (TCP) to pace the rate at which it consumes the content. The client displays the content to the end user at the encoded frame rate.
FIG. 2 illustrates a web server, a proxy server, and a web client known in the art. The proxy server can operate as a reverse proxy providing a content cache. The HTTP GET request from the client is analyzed by the proxy server to determine if the proxy server has a cached copy of the content and if so, the proxy server provides an immediate response to the web client without forwarding the request to the web server. If the proxy server does not have a cached copy of the content, then the proxy server forwards the HTTP GET request to the web server where the request is analyzed and an HTTP 200 OK response is generated for forwarding via the proxy server to the web client.
In other implementations of the proxy server, the proxy server can provide functions such as security, encryption, or compression. In these implementations, the proxy server provides a pre-processing stage for the client requests and a post-processing stage for the web server responses, where all content is delivered from the web server.